deploy: Silently do nothing if passed same set of deployments
authorColin Walters <walters@verbum.org>
Thu, 12 Apr 2018 16:53:17 +0000 (12:53 -0400)
committerAtomic Bot <atomic-devel@projectatomic.io>
Fri, 13 Apr 2018 15:26:29 +0000 (15:26 +0000)
Prep for handling staged deployments better; if we're not passed
the staged one back, then we just want to delete it but not
touch the bootloader config.

Closes: #1538
Approved by: jlebon

src/libostree/ostree-sysroot-deploy.c

index d3540c8d9b1c9b249304eca955e4120399a12897..e7dc25d003ce21999d6d804c5c5832965a888e8a 100644 (file)
@@ -2158,14 +2158,26 @@ ostree_sysroot_write_deployments_with_options (OstreeSysroot     *self,
     requires_new_bootversion = TRUE;
   else
     {
+      gboolean is_noop = TRUE;
       for (guint i = 0; i < new_deployments->len; i++)
         {
-          if (!deployment_bootconfigs_equal (new_deployments->pdata[i],
-                                             self->deployments->pdata[i]))
+          OstreeDeployment *cur_deploy = self->deployments->pdata[i];
+          OstreeDeployment *new_deploy = new_deployments->pdata[i];
+          if (!deployment_bootconfigs_equal (cur_deploy, new_deploy))
             {
               requires_new_bootversion = TRUE;
+              is_noop = FALSE;
               break;
             }
+          if (cur_deploy != new_deploy)
+            is_noop = FALSE;
+        }
+
+      /* Silently do nothing if we're passed the same set of deployments */
+      if (is_noop)
+        {
+          g_assert (!requires_new_bootversion);
+          return TRUE;
         }
     }